今天的絕望在我的預料之內,但也是真的沒想到會這麼絕望。
總之,來談談useRef吧。(實在也是不保證我自己有懂)
看到useRef,就會很直覺地想到ref,我在幾天前有稍微聊了一下,在這裡。
那麼,useRef要拿來做甚麼呢?
我自己會把它分為兩種用法:
之前,我們用過字串和function的形式來存放ref,但這次,我們可以直接把ref存在useRef裡面。
一樣,速速掠過!code的原始來源
import { useState, useEffect, useRef } from "react";
function App() {
const inputElement = useRef();
const focusInput = () => {
console.log(inputElement.current)
inputElement.current.focus();
};
return (
<>
<input type="text" ref={inputElement} />
<button onClick={focusInput}>Focus Input</button>
</>
);
}
export default App;
useRef的寫法,就是利用useRef()來建立一個useRef(好好笑,這句話在講甚麼?)。()裡面是這個ref的初始值。
然後,就可以拿來用了。
const inputElement = useRef();
把剛剛建立的inputElement放在input的ref{}裡面,這時候,inputElement就跟input綁定了。
return (
<>
<input type="text" ref={inputElement} />
<button onClick={focusInput}>Focus Input</button>
</>
);
接著我們來利用點擊事件實際操作看看我們綁定的ref。
這裡特別需要注意的是,useRef返回的是一個物件,這個物件會有current的屬性。current的值才是我們要的東西。
這時候如果觸發了focusInput這個function,就會focus剛剛綁定的input。
而console.log出來的東西,如大家所想,就是<input type="text">沒錯!
const focusInput = () => {
console.log(inputElement.current)
inputElement.current.focus();
};
那麼,明天再來繼續談談第二種用法吧。
哈哈哈哈哈我到底有沒有搞懂阿哈哈哈哈哈。